package com.example.demo.util;

import jakarta.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * 缓存数据如果是集合可以转换成json进行存储
 */

@Component
public class RedisUtil {

    @Resource
    RedisTemplate<String,Object> redisTemplate;

    /**
     * 缓存永久数据（永不过期）
     * @param key
     * @param value
     */

    public void cache(String key,Object value){
        ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();
        valueOperations.set(key,value);
    }

    /**
     * 删除指定key数据
     * @param key
     * @return
     */

    public boolean delete(String key){
        Boolean b = redisTemplate.delete(key);
        return b;
    }

    /**
     * 获取指定key数据
     * @param key redis数据键
     * @return
     */

    public Object getCacheValue(String key){
        return redisTemplate.opsForValue().get(key);
    }

    /**
     * 缓存定时数据，定时后会清除
     * @param key redis数据键索引
     * @param value redis数据具体值
     * @param timeOut 超时时间数值
     * @param timeUnit 数值时间单位
     */

    public void cacheValueByTime(String key, Object value, Long timeOut, TimeUnit timeUnit){
        redisTemplate.opsForValue().set(key,value,timeOut,timeUnit);
    }
    /**
     * 判断是否存在值
     */
    public boolean hasKey(String key){
       return redisTemplate.hasKey(key);
    }

}
